home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DS-CD ROM 2 1993 August
/
DS CD-ROM 2.Ausgabe (August 1993).iso
/
programm
/
ds0257
/
demo.exe
/
EXEC.DEM
< prev
next >
Wrap
Text File
|
1992-02-16
|
5KB
|
187 lines
; ----------------------------
; EXEC.DEM - Demoprogramm für die Routinen aus EXEC.BIB
; (für den A86)
;
; (c) Bernd Schemmer 1990 - 1992
; Letzter Update: 15.02.1992
;
; Übersetzen:
; A86 EXEC.DEM DEMOS.INC TO EXEC.COM
;
; Hinweis: Die Environment-Variable 'A86' muß den Dateinamen 'MACROS.MAC'
; enthalten und die .LIB- und .BIB-Dateien müssen über die Datei
; A86.LIB erreichbar sein.
;
; ---------------------------
jmp start ; Daten überspringen
logo db CR,LF
db CR,LF
db 'EXEC.DEM - Demoprogramm für die Routinen aus EXEC.BIB'
db CR,LF
db '------------------------------------------------------'
db CR,LF
db CR,LF
db 'Bitte geben Sie den Namen des auszuführenden Programmes an: '
db CR,LF
db '(Das Programm muß im akt. Directory oder in einem der in der'
db CR,LF
db ' Environment-Variable PATH verzeichneten Directorys zu finden'
db CR,LF
db ' sein.)'
db CR,LF
db 'Name: '
GETLENGTH logo
msg1 db CR,LF
db 'Bitte geben Sie die Parameter für das Programm oder <RETURN> für kein'
db CR,LF
db 'Parameter ein: '
db CR,LF
GETLENGTH msg1
msg10 db CR,LF
db CR,LF
db 'Auszuführendes Programm:'
db CR,LF
GETLENGTH msg10
msg11 db CR,LF
db '-----------------------------------------------------'
db CR,LF
db CR,LF
GETLENGTH msg11
error0 db CR,LF
db 'Fehler: Zuwenig Speicher vorhanden!'
db CR,LF
GETLENGTH error0
error1 db CR,LF
db '-----------------------------------------------------'
db CR,LF
db 'Fehler '
err1 db '??? bei der Programm-Ausführung!'
db CR,LF
GETLENGTH error1
error2 db CR,LF
db 'Angegebenes Programm nicht gefunden!'
db CR,LF
GETLENGTH error2
msg2 db CR,LF
db '-----------------------------------------------------'
db CR,LF
db 'Ausführung okay, Programm endete mit Errorlevel '
ret1 db '??? und Returncode '
ret2 db '???'
db CR,LF
GETLENGTH msg2
msg3 db CR,LF
db 'Nochmal? '
GETLENGTH msg3
db 65 ; max. Stringlänge (für Funktion 0Ah des Int 21h)
_progname db 129 dup 0 ; Speicher für den Programm-Namen
db 128 ; max. Stringlänge (für Funktion 0Ah des Int 21h)
progparms db 129 dup 0 ; Speicher für die Parameter
start:
call ShowLogo ; Logo ausgeben und Speicherblock verkleinern
start1:
; Programm-Namen lesen
mov dx,offset _progname-1
mov ah,0Ah
int 021h
; Programm-Namen vervollständigen
mov si,offset _progname
call SearcHFile
jnc >l1 ; Programm gefunden
; versuchen wir's indem wir '.COM' anhängen
mov si,offset _progname
mov bl,[si]
xor bh,bh ; BX = Länge des Namens
mov w[si+bx+1],'C.'
mov w[si+bx+3],'MO'
add b[si],4
call SearchFile
jnc >l1
; versuchen wir's indem wir '.EXE' anhängen
mov si,offset _progname
mov bl,[si]
xor bh,bh ; BX = Länge des Namens
mov w[si+bx-3],'E.'
mov w[si+bx-1],'EX'
call SearchFile
jnc >l1
; Fehler: Programm nicht gefunden
WRITE_STRING error2
jmp NextTry
l1:
WRITE_STRING msg1
; Parameter lesen
mov dx,offset progparms-1
mov ah,0Ah
int 021h
WRITE_STRING msg10
; konvertierten Programm-Namen ausgeben
mov dx,offset _progname+1
mov cl,[_progname]
xor ch,ch
mov bx,01h
mov ah,040h
int 021h
WRITE_STRING msg11
; Programm ausführen
mov si,offset _progname
mov bx,offset progparms
call ExecProgramm
jnc >l1
; Fehler bei der Ausführung!
mov di,offset err1
call Konvert_AL_To_Dezstring
WRITE_STRING error1
jmp NextTry
l1:
push ax
mov di,offset ret1
call Konvert_AL_To_Dezstring
pop ax
xchg ah,al
mov di,offset ret2
call Konvert_AL_To_Dezstring
WRITE_STRING msg2
NextTry:
WRITE_STRING msg3
mov ah,08h
int 021h
cmp al,CR
je >l1
cmp al,'j'
je >l1
cmp al,'J'
jne Ende
l1:
WRITE_STRING logo
jmp Start1
Ende:
EndProcess 0